home *** CD-ROM | disk | FTP | other *** search
/ HTBasic 9.3 / HTBasic 9.3.iso / LgcyPlus / disk2 / STRESVIB._ / STRESVIB.
Encoding:
Text File  |  2001-03-02  |  7.6 KB  |  183 lines

  1. 10    ! ************************************************
  2. 20    ! Example: Wing Stress/Vibration Analysis
  3. 30    !
  4. 40    ! This program displays a simulated aircraft
  5. 50    ! fuselage. When the user clicks one of the
  6. 60    ! four arrows displayed, the appropriate wing
  7. 70    ! stress/vibration analysis graph is displayed.
  8. 80    !
  9. 90    !                   NOTE
  10. 100   !
  11. 110   ! You may need to maximize the screen to see
  12. 120   ! the full picture.
  13. 130   !
  14. 140   ! ************************************************
  15. 150   !
  16. 160   INTEGER Num_points
  17. 170   ASSIGN @Panel TO WIDGET "PANEL"
  18. 180   CONTROL @Panel;SET ("WIDTH":650,"HEIGHT":600)
  19. 190   CONTROL @Panel;SET ("TITLE":" Example: Wing Stress/Vibration Analysis","SIZE CONTROL":"RESIZE CHILDREN")
  20. 200   CONTROL @Panel;SET ("SIZE CONTROL":"RESIZE CHILDREN")
  21. 210   CONTROL @Panel;SET ("SYSTEM MENU":"Quit")
  22. 220   ON EVENT @Panel,"SYSTEM MENU" GOTO Finis
  23. 230   !
  24. 240   ASSIGN @Label TO WIDGET "LABEL";SET ("X":100,"Y":5,"WIDTH":400),PARENT @Panel
  25. 250   CONTROL @Label;SET ("VALUE":"Click arrows to display results")
  26. 260   !
  27. 270   ASSIGN @Bitmap TO WIDGET "BITMAP";SET ("X":15,"Y":40,"BORDER":0,"RETAIN RASTER":1,"BITMAP FILE":"HELP_EX/WINGS.BMP","LABEL":"XRJ-711 Wind Tunnel Test"),PARENT @Panel
  28. 280   !
  29. 290   ON EVENT @Bitmap,"MOUSE CLICKED" GOSUB Mouse_click
  30. 300 Looping: GOTO Looping
  31. 310   !
  32. 320 Mouse_click:                    !
  33. 330   INTEGER Mouse_pos(1:2),X,Y
  34. 340   STATUS @Bitmap;RETURN ("MOUSE CLICK":Mouse_pos(*))
  35. 350   X=Mouse_pos(1)
  36. 360   Y=Mouse_pos(2)
  37. 370   IF X>=194 AND X<=213 AND Y>=230 AND Y<=260 THEN
  38. 380     GOSUB Sbup_disp
  39. 390   ELSE
  40. 400     IF X>=194 AND X<=213 AND Y>=292 AND Y<=322 THEN
  41. 410       GOSUB Sbdn_disp
  42. 420     ELSE
  43. 430       IF X>=450 AND X<=470 AND Y>=230 AND Y<=260 THEN
  44. 440         GOSUB Prup_disp
  45. 450       ELSE
  46. 460         IF X>=450 AND X<=470 AND Y>=292 AND Y<=322 THEN
  47. 470           GOSUB Prdn_disp
  48. 480         ELSE
  49. 490           DISP
  50. 500         END IF
  51. 510       END IF
  52. 520     END IF
  53. 530   END IF
  54. 540   RETURN
  55. 550   !
  56. 560   ! Data Section
  57. 570   !
  58. 580 Sbup_num_points: DATA 9
  59. 590 Sbup_x_data: DATA 0, 50, 100, 150, 200, 250, 300, 350, 400
  60. 600 Sbup_y_data: DATA 0, 30, 400,  20, 300,   5,   7,   4,   1
  61. 610   !
  62. 620 Sbdn_num_points: DATA 9
  63. 630 Sbdn_x_data: DATA 0, 50, 100, 150, 200, 250, 300, 350, 400
  64. 640 Sbdn_y_data: DATA 0, 60, 300,  40, 250,   5,   7,   4,   1
  65. 650   !
  66. 660 Prup_num_points: DATA 9
  67. 670 Prup_x_data: DATA 0, 50, 100, 150, 200, 250, 300, 350, 400
  68. 680 Prup_y_data: DATA 0, 35, 450,  30, 200,   5,   7,   4,   1
  69. 690   !
  70. 700 Prdn_num_points: DATA 9
  71. 710 Prdn_x_data: DATA 0, 50, 100, 150, 200, 250, 300, 350, 400
  72. 720 Prdn_y_data: DATA 0, 40, 350,  35, 230,   5,   7,   4,   1
  73. 730   !
  74. 740   ! Display Section
  75. 750   !
  76. 760 Sbup_disp:!
  77. 770   ASSIGN @Sbup_panel TO WIDGET "PANEL";SET ("X":4,"Y":4,"WIDTH":485,"HEIGHT":345,"SIZE CONTROL":"RESIZE CHILDREN")
  78. 780   CONTROL @Sbup_panel;SET ("TITLE":"Starboard Wing: Upper Skin Strain")
  79. 790   ASSIGN @Sbup_xy TO WIDGET "XY GRAPH";SET ("X":10,"Y":10,"WIDTH":454,"HEIGHT":265,"VISIBLE":0),PARENT @Sbup_panel
  80. 800   CONTROL @Sbup_xy;SET ("CURRENT AXIS":"X","AUTOSCALE":1,"AXIS LABEL":"Vibration Frequency (Hz)")
  81. 810   CONTROL @Sbup_xy;SET ("CURRENT AXIS":"Y","AUTOSCALE":1,"AXIS LABEL":"Micro Strain")
  82. 820   RESTORE Sbup_num_points
  83. 830   READ Num_points
  84. 840   ON ERROR GOTO Sbup_alloc
  85. 850   DEALLOCATE Sbup_x(*),Sbup_y(*)
  86. 860   !
  87. 870 Sbup_alloc: OFF ERROR
  88. 880   ALLOCATE INTEGER Sbup_x(1:Num_points),Sbup_y(1:Num_points)
  89. 890   RESTORE Sbup_x_data
  90. 900   READ Sbup_x(*)
  91. 910   RESTORE Sbup_y_data
  92. 920   READ Sbup_y(*)
  93. 930   CONTROL @Sbup_xy;SET ("X DATA":Sbup_x(*),"Y DATA":Sbup_y(*),"VISIBLE":1)
  94. 940   ASSIGN @Sbup_button TO WIDGET "PUSHBUTTON";SET ("X":200,"Y":278,"HEIGHT":30,"LABEL":"DONE"),PARENT @Sbup_panel
  95. 950   ON EVENT @Sbup_button,"ACTIVATED" GOSUB Sbup_done
  96. 960   RETURN !sbup_disp
  97. 970   !
  98. 980 Sbup_done: ASSIGN @Sbup_panel TO *
  99. 990   DEALLOCATE Sbup_x(*),Sbup_y(*)
  100. 1000  RETURN
  101. 1010  !
  102. 1020 Sbdn_disp:!
  103. 1030  ASSIGN @Sbdn_panel TO WIDGET "PANEL";SET ("X":4,"Y":420,"WIDTH":485,"HEIGHT":345,"SIZE CONTROL":"RESIZE CHILDREN")
  104. 1040  CONTROL @Sbdn_panel;SET ("TITLE":"Starboard Wing: Lower Skin Strain")
  105. 1050  ASSIGN @Sbdn_xy TO WIDGET "XY GRAPH";SET ("X":10,"Y":10,"WIDTH":450,"HEIGHT":265,"VISIBLE":0),PARENT @Sbdn_panel
  106. 1060  CONTROL @Sbdn_xy;SET ("CURRENT AXIS":"X","AUTOSCALE":1,"AXIS LABEL":"Vibration Frequency (Hz)")
  107. 1070  CONTROL @Sbdn_xy;SET ("CURRENT AXIS":"Y","AUTOSCALE":1,"AXIS LABEL":"Micro Strain")
  108. 1080  RESTORE Sbdn_num_points
  109. 1090  READ Num_points
  110. 1100  ON ERROR GOTO Sbdn_alloc
  111. 1110  DEALLOCATE Sbdn_x(*),Sbdn_y(*)
  112. 1120  !
  113. 1130 Sbdn_alloc: OFF ERROR
  114. 1140  ALLOCATE INTEGER Sbdn_x(1:Num_points),Sbdn_y(1:Num_points)
  115. 1150  RESTORE Sbdn_x_data
  116. 1160  READ Sbdn_x(*)
  117. 1170  RESTORE Sbdn_y_data
  118. 1180  READ Sbdn_y(*)
  119. 1190  CONTROL @Sbdn_xy;SET ("X DATA":Sbdn_x(*),"Y DATA":Sbdn_y(*),"VISIBLE":1)
  120. 1200  ASSIGN @Sbdn_button TO WIDGET "PUSHBUTTON";SET ("X":200,"Y":278,"HEIGHT":30,"LABEL":"DONE"),PARENT @Sbdn_panel
  121. 1210  ON EVENT @Sbdn_button,"ACTIVATED" GOSUB Sbdn_done
  122. 1220  RETURN
  123. 1230  !
  124. 1240 Sbdn_done: ASSIGN @Sbdn_panel TO *
  125. 1250  DEALLOCATE Sbdn_x(*),Sbdn_y(*)
  126. 1260  RETURN
  127. 1270  !
  128. 1280 Prup_disp:!
  129. 1290  ASSIGN @Prup_panel TO WIDGET "PANEL";SET ("X":535,"Y":4,"WIDTH":485,"HEIGHT":345,"SIZE CONTROL":"RESIZE CHILDREN")
  130. 1300  CONTROL @Prup_panel;SET ("TITLE":"Port Wing: Upper Skin Strain")
  131. 1310  ASSIGN @Prup_xy TO WIDGET "XY GRAPH";SET ("X":10,"Y":10,"WIDTH":454,"HEIGHT":265,"VISIBLE":0),PARENT @Prup_panel
  132. 1320  CONTROL @Prup_xy;SET ("CURRENT AXIS":"X","AUTOSCALE":1,"AXIS LABEL":"Vibration Frequency (Hz)")
  133. 1330  CONTROL @Prup_xy;SET ("CURRENT AXIS":"Y","AUTOSCALE":1,"AXIS LABEL":"Micro Strain")
  134. 1340  RESTORE Prup_num_points
  135. 1350  READ Num_points
  136. 1360  ON ERROR GOTO Prup_alloc
  137. 1370  DEALLOCATE Prup_x(*),Prup_y(*)
  138. 1380  !
  139. 1390 Prup_alloc: OFF ERROR
  140. 1400  ALLOCATE INTEGER Prup_x(1:Num_points),Prup_y(1:Num_points)
  141. 1410  RESTORE Prup_x_data
  142. 1420  READ Prup_x(*)
  143. 1430  RESTORE Prup_y_data
  144. 1440  READ Prup_y(*)
  145. 1450  CONTROL @Prup_xy;SET ("X DATA":Prup_x(*),"Y DATA":Prup_y(*),"VISIBLE":1)
  146. 1460  ASSIGN @Prup_button TO WIDGET "PUSHBUTTON";SET ("X":200,"Y":278,"HEIGHT":30,"LABEL":"DONE"),PARENT @Prup_panel
  147. 1470  ON EVENT @Prup_button,"ACTIVATED" GOSUB Prup_done
  148. 1480  RETURN
  149. 1490  !
  150. 1500 Prup_done: ASSIGN @Prup_panel TO *
  151. 1510  DEALLOCATE Prup_x(*),Prup_y(*)
  152. 1520  RETURN
  153. 1530  !
  154. 1540 Prdn_disp:!
  155. 1550  ASSIGN @Prdn_panel TO WIDGET "PANEL";SET ("X":535,"Y":420,"WIDTH":485,"HEIGHT":345,"SIZE CONTROL":"RESIZE CHILDREN")
  156. 1560  CONTROL @Prdn_panel;SET ("TITLE":"Port Wing: Lower Skin Strain")
  157. 1570  ASSIGN @Prdn_xy TO WIDGET "XY GRAPH";SET ("X":10,"Y":10,"WIDTH":450,"HEIGHT":265,"VISIBLE":0),PARENT @Prdn_panel
  158. 1580  CONTROL @Prdn_xy;SET ("CURRENT AXIS":"X","AUTOSCALE":1,"AXIS LABEL":"Vibration Frequency (Hz)")
  159. 1590  CONTROL @Prdn_xy;SET ("CURRENT AXIS":"Y","AUTOSCALE":1,"AXIS LABEL":"Micro Strain")
  160. 1600  RESTORE Prdn_num_points
  161. 1610  READ Num_points
  162. 1620  ON ERROR GOTO Prdn_alloc
  163. 1630  DEALLOCATE Prdn_x(*),Prdn_y(*)
  164. 1640  !
  165. 1650 Prdn_alloc: OFF ERROR
  166. 1660  ALLOCATE INTEGER Prdn_x(1:Num_points),Prdn_y(1:Num_points)
  167. 1670  RESTORE Prdn_x_data
  168. 1680  READ Prdn_x(*)
  169. 1690  RESTORE Prdn_y_data
  170. 1700  READ Prdn_y(*)
  171. 1710  CONTROL @Prdn_xy;SET ("X DATA":Prdn_x(*),"Y DATA":Prdn_y(*),"VISIBLE":1)
  172. 1720  ASSIGN @Prdn_button TO WIDGET "PUSHBUTTON";SET ("X":200,"Y":278,"HEIGHT":30,"LABEL":"DONE"),PARENT @Prdn_panel
  173. 1730  ON EVENT @Prdn_button,"ACTIVATED" GOSUB Prdn_done
  174. 1740  RETURN
  175. 1750  !
  176. 1760 Prdn_done: ASSIGN @Prdn_panel TO *
  177. 1770  DEALLOCATE Prdn_x(*),Prdn_y(*)
  178. 1780  RETURN
  179. 1790  !
  180. 1800 Finis:  !
  181. 1810  ASSIGN @Panel TO *         ! Delete PANEL widget
  182. 1820  END
  183.